function LeftRotateString(str, n)
{
    // write code here
    // 因为要求空间复杂度是o(n) 时间复杂度是o(n)
    // 如果调用字符串的方法 空间复杂度会变大
    // 将字符串转换成链表
    if(str === null) return ''
    var s_list = str.split('') // 字符串转数组
    // 定义翻转字符串的函数
    function reverseStr(lo,hi){ // 输入的参数是左边界和右边界
      while(lo < hi){ // 只要左边界比右边界小 我们就交换左右边界的字符
        var temp = s_list[lo]
        s_list[lo] = s_list[hi]
        s_list[hi] = temp
        lo++ // 然后让左边界右移 右边界左移
        hi--
      }
    }
    // 接下来调用这个函数
    var m = str.length // 初始化字符串长度m
    // 判断n和m的大小 如果n < m 说明可以用这种方法
    // 如果n = m 说明翻转过后还是他 还能用这种方法
    // 如果n > m 就得翻转 n % m 的个数了
    if(n > m) {
      n = n % m
    } 
    // 首先翻转整个字符串
    reverseStr(0,m-1) // 因为函数中的hi是可以取到的
    reverseStr(0,m-n-1) // 翻转前m-n-1个字符 就是翻转原来的n后面的字符 字符数是m-1 -n个  总共是m-1个 除去前面的n个
    reverseStr(m-n,m-1) // 翻转最后n个字符 就是从上一个的结尾+1
    // 最后使用空的连接符连接数组当中的数组元素
    return s_list.join('')
}
module.exports = {
    LeftRotateString : LeftRotateString
};